Skip to content

feat: add ElevenLabs pricing - #898

Open
roh26it wants to merge 2 commits into
mainfrom
feat/elevenlabs-pricing
Open

feat: add ElevenLabs pricing#898
roh26it wants to merge 2 commits into
mainfrom
feat/elevenlabs-pricing

Conversation

@roh26it

@roh26it roh26it commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds pricing/elevenlabs.json — no ElevenLabs entry existed before this.
  • Text-to-speech: $0.0001/character (multilingual v2, v3), $0.00005/character (flash, turbo v2.5) — stored per this repo's cents-per-unit convention (0.01 / 0.005).
  • Speech-to-text (scribe_v1): $0.22/hour, stored as cents/second (0.00611111).
  • Rates taken directly from ElevenLabs' published API pricing page (elevenlabs.io/pricing/api), not estimated.
  • Companion PR on the gateway side (Portkey-AI/gateway-enterprise-node#1940) adds ElevenLabs as a provider and consumes this file via npm run sync:pricing.

Test plan

  • python3 scripts/check_duplicate_keys.py pricing/elevenlabs.json passes
  • Schema matches sync-to-gateway.js's validatePricingSchema (verified by reading the validator directly, not just the docs)
  • Cents-per-unit convention cross-checked against openai.json (gpt-4o) and matches this same repo's format exactly

@kiran-4444

Copy link
Copy Markdown
Contributor

Let's add a config inside general folder as well for this provider.

roh26it and others added 2 commits August 24, 2026 20:30
Text-to-speech billed per character (model-tier dependent: multilingual/v3
vs flash/turbo), speech-to-text billed per second. Rates taken from
ElevenLabs' published API pricing (elevenlabs.io/pricing/api).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Mirrors general/deepgram.json — audio type, playground disabled, model
keys matching the pricing entries.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@roh26it
roh26it force-pushed the feat/elevenlabs-pricing branch from f5c7267 to 1b3e9a5 Compare August 24, 2026 15:01
@roh26it

roh26it commented Aug 24, 2026

Copy link
Copy Markdown
Contributor Author

Added general/elevenlabs.json, modelled on general/deepgram.jsontype.primary: "audio", disablePlayground: true, empty params.

Model keys match the pricing entries, with one intentional difference: pricing/elevenlabs.json also carries text-to-speech and speech-to-text keys. Those aren't models — they're route-level fallbacks the gateway resolves to when a request omits model_id, so they'd be out of place in a model catalog. The default entry exists only in the general config, matching the convention there.

Validated with the same checks CI runs: jq empty over both folders and scripts/check_duplicate_keys.py across all configs. Also rebased onto current main.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants